define(["require","jquery","notify_comm","dataTables_comm","String","Dataset"],
    function(require,$,notify_comm,dataTables_comm,String,Dataset){

    var data_tables = null;

    //初始化表格
    var _initTable = function(){

        //初始化异步数据请求
        var ajax_params = {
            url:"/etl/task/pagelist",  //请求URL地址
            data:{}//查询参数
        };
        //列数据 data 对应服务端访问的json 数据 key ,title 表头显示名称
        var columns = [
            {"data":"task_name","title":"名称"},
            {"data":"cron","title":"表达式"},
            {"data":"group_name","title":"组"},
            {"data":"etl_define_id","title":"ETL定义"},
            {"data":"record_count","title":"总数"},
            {
                "data":"status",
                "title":"状态",
                "render": function(data, type, row) {
                    if(data == "1"){
                        return "启用";
                    }else{
                        return "停用";
                    }
                }
            },
            {"data":"id","title":"ID","visible": false}
        ];
        //自定义按钮
        var buttons = [
            {
                "id":"searchData",      //按钮ID
                "name":"searchData",    //按钮名称
                "text":"查询数据",   //按钮显示文件
                "icons":"fa-align-left", //显示图标
                "callback": _btnSearchClick
            }
        ];
        //默认按钮是否隐藏 true: 隐藏 false:显示 ，不传对应的参数，默认显示按钮
        var default_buttons = [
            {"add":false,"callback":_btnAddClick},//新增按钮
            {"edit":false,"callback":_btnEditClick},//编辑按钮
            {"delete":false,"callback":_btnDeleteClick},//删除按钮
            {"select":true,"callback":null},//选择下拉按钮
            {"export":false,"callback":null}//导出下拉按钮
        ];
        //封装参数
        var options = {
            "id":"etl_task_table", //tableID
            "language":"zh_CN", //语言参数
            "ajax_params":ajax_params, //异步请求参数
            "columns":columns,//表列数据参数
            "buttons":buttons, //自定义按钮参数
            "default_buttons":default_buttons, //默认按钮
            "colReorder":true//列位置调整
        };

        //调用表格初始化方法
        data_tables = dataTables_comm.dataTables_init(options,null);
        $("#etl_task_table").colResizable();//列宽度调整

    };

    //查询
    var _btnSearchClick = function () {
        var param = {
            "name":$("#param_name").val(),
            "status":$("#param_status").val()
        };
        var query_params = {"queryData":JSON.stringify(param)};
        $('#etl_task_table').dataTable().fnSettings().ajax.data = query_params; //参数传递，fnSettings 初始化参数不用用 大写的 DataTable(),只能用小写dataTable();
        $('#etl_task_table').dataTable().fnDraw(false);//true刷新页面到第一页，false当前页
    };

    //新增
    var _btnAddClick = function () {
        _resetModal();//重置数据
        $("#etl_task_modal").show();  //点击模态窗口遮罩层会关闭模态窗口的bug
        $("#etl_task_modal").modal({
            backdrop: "static",
            show: false
        });
        $("#etl_task_modal").modal("show");
    };

    //编辑
    var _btnEditClick = function () {

        var rowData =  data_tables.rows('.selected').data().toArray();

        if(String.isEmpty(rowData) || rowData.length == 0){
            notify_comm.errorMSG({"message":"请选择一行数据"});
            return false;
        }
        if(rowData.length > 1){
            notify_comm.errorMSG({"message":"只能选择一行数据进行编辑"});
            return false;
        }

        $("#etl_task_modal").show();  //点击模态窗口遮罩层会关闭模态窗口的bug
        $("#etl_task_modal").modal({
            backdrop: "static",
            show: false
        });
        $("#etl_task_modal").modal("show");

        $("[etl_task-form]").each(function(index,val){
            var idText = $(this) .attr("id");
            var value = rowData[0][idText];
            console.info(idText+"=============="+value);
            $(this).val(value);
        });

    };

    //删除
    var _btnDeleteClick = function () {
        var rowData =  data_tables.rows('.selected').data().toArray();
        if(String.isEmpty(rowData) || rowData.length == 0){
            notify_comm.errorMSG({"message":"请选择一行数据"});
            return false;
        }
        if(rowData.length > 1){
            notify_comm.errorMSG({"message":"只能选择一行数据进行编辑"});
            return false;
        }
        if(!confirm("确认删除吗")){
            return false;
        }
        $.ajax({
            url: "/etl/task/delete",
            type: "POST",
            async: false,
            dataType: "text",
            data: {"id": rowData[0].id},
            success: function (data) {
                if(data != null && data != ""){
                    notify_comm.successMSG({"message":"操作成功"})
                    _btnSearchClick();
                }
            }
        });
    };

    //数据保存
    var _submitData = function(){
        $("#submit_etl_task").on("click",function () {
            var requestData = {};
            $("[etl_task-form]").each(function(index,val){
                requestData[$(this).attr("id")] = val.value;
            });
            $.ajax({
                url: '/etl/task/save',
                async: false,
                type: 'post',
                data: {"requestData":JSON.stringify(requestData)},
                success: function (data) {
                    //关闭模态框
                    $('#etl_define_modal').modal("hide");
                    if(data){
                        notify_comm.successMSG({"message":"操作成功"});
                    }else{
                        notify_comm.errorMSG({"message":"操作失败"});
                    }
                    //重置模态框数据
                    _resetModal();
                    //重新加载数据
                    _btnSearchClick();
                }
            });
        });
    };

    //重置模态框数据
    var _resetModal = function(){
        $("[etl_task-form]").each(function(index,val){
            $(this).val("");
        });
    };

    //函数初始化
    var init = function(){
        _initTable();
        _submitData();
    };

    //返回
    return {
        init:init
    }

});